package com.starpl.mobile.android.monthunsae.november.domain;

import java.io.Serializable;
import java.util.ArrayList;

import org.json.JSONException;
import org.json.JSONObject;

/**
 * 유저 정보 저장 클래스
 * 
 * @author 우연화
 * @since 2011.03.16
 */
public class UserInfo implements Serializable
{
	private static final long serialVersionUID = 1L;
	private String mUserId;
	private int mUserIdx;
	private String mNickName;
	private String mEmail;
	
	// 신비운 정보에 사용할 데이터 저장공간
	private String mUserName;
	private String mBirthDate;
	private int mLunarType;
	private String mCellPhone;
	private int mSexFlag;
	
	
	private ArrayList<Keyword> mKeywordList;
	
	public UserInfo()
	{
		super();
	}

	public UserInfo(JSONObject object)
	{
		try
		{
			this.mUserId = object.getString("userId");
			this.mUserIdx = object.getInt("userIdx");
			this.mNickName = object.getString("nickName");
			this.mEmail = object.getString("email");
			
			// 신비운 데이터 세팅
			this.mUserName = object.getString("userName");
			
			if(object.isNull("birthDate"))
			{
				this.mLunarType = object.getInt("lunarType");
				this.mCellPhone = object.getString("cellPhone");
				this.mSexFlag = object.getInt("sexFlag");
			}
			else
			{
				this.mBirthDate = object.getString("birthDate").split(" ")[0];
				this.mLunarType = object.getInt("lunarType");
				this.mCellPhone = object.getString("cellPhone");
				this.mSexFlag = object.getInt("sexFlag");
			}
		}
		catch(JSONException e)
		{
			e.printStackTrace();
		}
	}

	/**
	 * 유저 아이디를 반환한다.
	 * 
	 * @return userId
	 */
	public String getUserId()
	{
		return mUserId;
	}

	/**
	 * 유저 아이디를 저장한다.
	 * 
	 * @param userId
	 */
	public void setUserId(String userId)
	{
		this.mUserId = userId;
	}

	/**
	 * 유저 Idx를 반환한다.
	 * 
	 * @return userIdx
	 */
	public int getUserIdx()
	{
		return mUserIdx;
	}

	/**
	 * 유저 Idx를 저장한다.
	 * 
	 * @param userIdx
	 */
	public void setUserIdx(int userIdx)
	{
		this.mUserIdx = userIdx;
	}

	/**
	 * 유저의 키워드 정보 리스트를 반환한다.
	 * 
	 * @return 유저 키워드 리스트
	 */
	public ArrayList<Keyword> getKeywordList()
	{
		return mKeywordList;
	}

	/**
	 * 유저의 키워드 정보 리스트를 반환한다.
	 * 
	 * @param keywordList
	 */
	public void setKeywordList(ArrayList<Keyword> keywordList)
	{
		this.mKeywordList = keywordList;
	}

	/**
	 * 유저의 닉네임(별이름)을 반환합니다.
	 * 
	 * @return nickname
	 */
	public String getNickName()
	{
		return mNickName;
	}

	/**
	 * 유저의 닉네임(별이름)을 저장합니다.
	 * 
	 * @param nickName 닉네임(별이름)
	 */
	public void setNickName(String nickName)
	{
		this.mNickName = nickName;
	}

	/**
	 * 유저의 이메일을 반환합니다.
	 * 
	 * @return email
	 */
	public String getEmail()
	{
		return mEmail;
	}

	/**
	 * 유저의 이메이을 저장합니다.
	 * 
	 * @param email 이메일
	 */
	public void setEmail(String email)
	{
		this.mEmail = email;
	}

	/**
	 * 유저의 이름을 반환합니다.
	 * 
	 * @return
	 */
	public String getUserName()
	{
		return mUserName;
	}

	/**
	 * 유저의 이름을 저장합니다.
	 * 
	 * @param userName
	 */
	public void setUserName(String userName)
	{
		this.mUserName = userName;
	}

	/**
	 * 유저의 생년월일을 반환합니다.
	 * 
	 * @return
	 */
	public String getBirthDate()
	{
		return mBirthDate;
	}

	/**
	 * 유저의 생년월일을 저장합니다.
	 * 
	 * @param birthDate
	 */
	public void setBirthDate(String birthDate)
	{
		this.mBirthDate = birthDate;
	}

	/**
	 * 유저의 생년월일 형식(음력, 양력, 윤달 등)을 반환합니다.
	 * 
	 * @return
	 */
	public int getLunarType()
	{
		return mLunarType;
	}

	/**
	 * 유저의 생년월일 형식(음력, 양력, 윤달 등)을 저장합니다.
	 * 
	 * @param lunarType
	 */
	public void setLunarType(int lunarType)
	{
		this.mLunarType = lunarType;
	}

	/**
	 * 유저의 전화번호를 반환합니다.
	 * 
	 * @return
	 */
	public String getCellPhone()
	{
		return mCellPhone;
	}

	/**
	 * 유저의 전화번호를 저장합니다.
	 * 
	 * @param cellPhone
	 */
	public void setCellPhone(String cellPhone)
	{
		this.mCellPhone = cellPhone;
	}

	/**
	 * 유저의 성별을 반환합니다.
	 * 
	 * @return
	 */
	public int getSexFlag()
	{
		return mSexFlag;
	}

	/**
	 * 유저의 성별을 저장합니다.
	 * 
	 * @param sexFlag
	 */
	public void setSexFlag(int sexFlag)
	{
		this.mSexFlag = sexFlag;
	}
}